/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dominosaude.dominoesControler;

import java.rmi.AccessException;
import java.rmi.NotBoundException;
import java.rmi.Remote;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.AlreadyBoundException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 *
 * @author Rafael
 * last update 16.11.09
 */
public class HostJogo implements InterfaceRemotaDomino{

/*   public static void main(){
	   new HostJogo ();
   }
*/

    public InterfaceRemotaDomino stub;
    public InterfaceRemotaDomino stubClient;
    private DominoesControl controle;

    private Registry registry;

   public HostJogo(DominoesControl c){

      controle = c;
      try{
         stub = (dominosaude.dominoesControler.InterfaceRemotaDomino) UnicastRemoteObject.exportObject (this, 0);
         System.out.println ("Objeto remoto exportado!");

         registry = LocateRegistry.createRegistry(1099);
         System.out.println ("Registro e a porta criado!");

         registry.bind ("DominoSaude", stub);
         System.out.println ("Mesa criada...");

         // Se auto conectar na mesa que acaba de criar, enviando como parametro INT que indica qual o jogador

      }catch(RemoteException RException){
         System.out.println("Registro nao funcionou, erro na criacao. " + RException.getMessage());
      }catch(AlreadyBoundException ABException){
         System.out.println("Registro nao funcionou, erro de nomeacao. " + ABException.getMessage());
      }
      // Usar as filas do jogo local

   }

    public int jogar(ArrayList jogador1, ArrayList jogador2, ArrayList mesa,int jogador) throws RemoteException {
        int i;
        System.out.println("jogar do host!!");
        controle.setGameStatus(DominoesControl.Status.JOGADOR1_VEZ);
        controle.MPRealizaJogadaRemota(jogador1, jogador2, mesa);
        
        return 0;
    }

    public void ClientConnected() throws RemoteException, AccessException {

        try {
            registry = LocateRegistry.getRegistry("localhost", 1098);
            stubClient = (InterfaceRemotaDomino) registry.lookup ("DominoClient");
            controle.criarJogo2Jogadores();
        } catch (NotBoundException ex) {
            System.out.println("Erro ao pegar cliente remoto");
        }
    }
}